/*
 * Copyright (c) 2006-2018, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2018-12-5      SummerGift   first version
 */

#ifndef _FAL_CFG_H_
#define _FAL_CFG_H_

#include <rtthread.h>
#include <board.h>

#define FLASH_SIZE_GRANULARITY_32K      (4 * 32 * 1024)
#define FLASH_SIZE_GRANULARITY_128K     (128 * 1024)
#define FLASH_SIZE_GRANULARITY_256K     (7 * 256 *1024)

#define STM32_FLASH_START_ADRESS_32K    (STM32_FLASH_START_ADRESS)
#define STM32_FLASH_START_ADRESS_128K   (STM32_FLASH_START_ADRESS_32K + FLASH_SIZE_GRANULARITY_32K)
#define STM32_FLASH_START_ADRESS_256K   (STM32_FLASH_START_ADRESS_128K + FLASH_SIZE_GRANULARITY_128K)

extern const struct fal_flash_dev stm32_onchip_flash_256k;

extern struct fal_flash_dev nor_flash0;

extern struct fal_flash_dev nor_flash1;
#define APP_ADDRESS  0
#define APP_SIZE    FLASH_SIZE_GRANULARITY_256K

#define DOWNLOAD_ADDRESS   0
#define DOWMLOAD_SIZE     2 * 1024 * 1024

#define FACTORY_ADDRESS		DOWNLOAD_ADDRESS + DOWMLOAD_SIZE
#define FACTORY_SIZE			2 * 1024 * 1024

#define EASYFLASH_ADDRESS  FACTORY_ADDRESS + FACTORY_SIZE
#define EASYFLASH_SIZE    4 * 1024 * 1024

#define FONT_ADDRESS    	EASYFLASH_ADDRESS + EASYFLASH_SIZE
#define FONT_SIZE					24 * 1024 * 1024

#define FILESYS_ADDRESS		0
#define FIFLESYS_SIZE     32 * 1024 * 1024

#define FAL_FLASH_DEV_TABLE                                          \
{     																															 \
		&stm32_onchip_flash_256k,																				 \
    &nor_flash0,                                        						 \
		&nor_flash1,                                        						 \
}
/* ====================== Partition Configuration ========================== */
#ifdef FAL_PART_HAS_TABLE_CFG

/* partition table */
#define FAL_PART_TABLE                                                                                     							    \
{   																																																		 	 				 				  \
	{FAL_PART_MAGIC_WROD, 	"app",    		 "onchip_flash_256k",   	APP_ADDRESS,           		APP_SIZE, 					 0},      	  \
	{FAL_PART_MAGIC_WROD, 	"download",    "W25Q256",           		DOWNLOAD_ADDRESS,     		DOWMLOAD_SIZE,  		 0},        	\
	{FAL_PART_MAGIC_WROD, 	"factory",     "W25Q256",           		FACTORY_ADDRESS,     			FACTORY_SIZE,  			 0},        	\
	{FAL_PART_MAGIC_WROD, 	"easyflash",   "W25Q256",           		EASYFLASH_ADDRESS,      	EASYFLASH_SIZE,			 0},     	 	  \
	{FAL_PART_MAGIC_WROD, 	"font",  		 	 "W25Q256",           		FONT_ADDRESS,     				FONT_SIZE,  				 0}, 	 				\
	{FAL_PART_MAGIC_WROD, 	"filesystem",  "W25Q256_Q",           	FILESYS_ADDRESS,     			FIFLESYS_SIZE,  		 0}, 	 				\
}

#endif /* FAL_PART_HAS_TABLE_CFG  {FAL_PART_MAGIC_WROD, 	"filesystem",  "W25Q256_Q",           0,       					32 * 1024 * 1024,   0}, 	 				\*/
#endif /* _FAL_CFG_H_ */
